﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Linq.Expressions;
using System.Threading;
using System.Web;
using EF4.Core.Repository;
using EF4.Core.Models.Entities;
using System.Reflection;
using EF4.Core.Helpers;
using EF4.Core;
using Microsoft.Practices.EnterpriseLibrary.Data;


namespace EF4.Repository.SQL
{
    public class GenericRepository<T> : IGenericRepository<T> where T : EntityBase
    {

        protected Database database;

        public GenericRepository() {
            database = DatabaseFactory.CreateDatabase("EF4.Repository.SQL");
        }

        public void Dispose()
        {
            //ObjectContext.SaveChanges();
            //DisposeObject(true);
            GC.SuppressFinalize(this);
        }
        ~GenericRepository()
        {
        }

        public T Load(Expression<Func<T, bool>> whereCondition)
        {
            throw new NotImplementedException();
        }

        public void LoadProperty(T entity, Expression<Func<T, object>> selector)
        {
            throw new NotImplementedException();
        }

        public List<T> GetAll()
        {
            throw new NotImplementedException();
        }

        public void Add(T entity)
        {
            throw new NotImplementedException();
        }

        public void Delete(T entity)
        {
            throw new NotImplementedException();
        }

        public void Update(T entity)
        {
            throw new NotImplementedException();
        }

        public virtual T Get(int id)
        {
            throw new NotImplementedException();
        }

        public T Get(string KeyName, object value)
        {
            throw new NotImplementedException();
        }

        public IPagedList<T> GetListPaged(int pageIndex, int pageSize, string orderBy, OrderDirections direction)
        {
            throw new NotImplementedException();
        }

        public IPagedList<T> GetListPaged(int pageIndex, int pageSize, string orderBy, OrderDirections direction, Expression<Func<T, bool>> filter)
        {
            throw new NotImplementedException();
        }

        public int Count()
        {
            throw new NotImplementedException();
        }

        T IGenericRepository<T>.Load(Expression<Func<T, bool>> whereCondition)
        {
            throw new NotImplementedException();
        }

        void IGenericRepository<T>.LoadProperty(T entity, Expression<Func<T, object>> selector)
        {
            throw new NotImplementedException();
        }

        List<T> IGenericRepository<T>.GetAll()
        {
            throw new NotImplementedException();
        }

        void IGenericRepository<T>.Add(T entity)
        {
            throw new NotImplementedException();
        }

        void IGenericRepository<T>.Delete(T entity)
        {
            throw new NotImplementedException();
        }

        void IGenericRepository<T>.Update(T entity)
        {
            throw new NotImplementedException();
        }

        T IGenericRepository<T>.Get(int id)
        {
            throw new NotImplementedException();
        }

        T IGenericRepository<T>.Get(string KeyName, object value)
        {
            throw new NotImplementedException();
        }

        IPagedList<T> IGenericRepository<T>.GetListPaged(int pageIndex, int pageSize, string orderBy, OrderDirections direction)
        {
            throw new NotImplementedException();
        }

        IPagedList<T> IGenericRepository<T>.GetListPaged(int pageIndex, int pageSize, string orderBy, OrderDirections direction, Expression<Func<T, bool>> filter)
        {
            throw new NotImplementedException();
        }

        int IGenericRepository<T>.Count()
        {
            throw new NotImplementedException();
        }

        void IDisposable.Dispose()
        {
            throw new NotImplementedException();
        }
    }
}
